﻿
#ifndef __SPM_BAR_QR_CODE_H__
#define __SPM_BAR_QR_CODE_H__

#define SPM_API  

#pragma once

using namespace std;


enum SPM_EM_QR_CODE
{
	SPM_EM_QR_CODE_NONE = 0,
	SPM_EM_QR_CODE_AZTEC = 1,
	SPM_EM_QR_CODE_DATA_MATRIX = 2,
	SPM_EM_QR_CODE_PDF_417 = 3,
	SPM_EM_QR_CODE_QR_CODE = 4,
};

enum SPM_EM_BAR_CODE
{
	SPM_EM_BAR_CODE_NONE = 0,
	SPM_EM_BAR_CODE_CODABAR = 1,
	SPM_EM_BAR_CODE_CODE_39 = 2,
	SPM_EM_BAR_CODE_CODE_93 = 3,
	SPM_EM_BAR_CODE_CODE_128 = 4,
	SPM_EM_BAR_CODE_EAN_8 = 5,
	SPM_EM_BAR_CODE_EAN_13 = 6,
	SPM_EM_BAR_CODE_ITF = 7,
	SPM_EM_BAR_CODE_UPC_A = 8,
	SPM_EM_BAR_CODE_UPC_E = 9,
};

// 本函数目前只支持中文，英文，数字  只生成 QR_CODE 类型的二维码
// return  SPM_SUCCESS 成功，其它为失败，生成图片类型BMP
// 参数 strErrDesc 返回接收成功失败，包括失败的原因
// 参数 strText    二维码的内容
// 参数 strPath    保存文件的绝对路径，包括文件名，目前支持 .bmp
// 参数 eCode      生成二维码的类型
SPM_API  int  spm_qr_code_file_zh(std::string& strErrDesc, std::string  strText, std::string  strPath);
SPM_API  int  spm_qr_code_mem_zh (std::string& strErrDesc, std::string  strText, std::string& strMem);

// 本函数目前只支持英文，数字
// return  SPM_SUCCESS 成功，其它为失败，生成图片类型PNG
// 参数 strErrDesc 返回接收成功失败，包括失败的原因
// 参数 strText    二维码的内容
// 参数 strPath    保存文件的绝对路径，包括文件名，目前支持 .png .jpg .bmp
// 参数 eCode      生成二维码的类型
SPM_API  int  spm_qr_code_file(std::string& strErrDesc, std::string  strText, std::string  strPath, SPM_EM_QR_CODE eCode);
SPM_API  int  spm_qr_code_file(std::string& strErrDesc, std::wstring strText, std::string  strPath, SPM_EM_QR_CODE eCode);
// 本函数目前只支持英文，数字
// return  SPM_SUCCESS 成功，其它为失败，生成图片类型PNG
// 参数 strErrDesc 返回接收成功失败，包括失败的原因
// 参数 strText    二维码的内容
// 参数 strMem     保存生成图片的内容， 目前支持 png
// 参数 eCode      生成二维码的类型
SPM_API  int  spm_qr_code_mem (std::string& strErrDesc, std::string  strText, std::string& strMem, SPM_EM_QR_CODE eCode);
SPM_API  int  spm_qr_code_mem (std::string& strErrDesc, std::wstring strText, std::string& strMem, SPM_EM_QR_CODE eCode);

// 本函数目前只支持英文，数字
// return  SPM_SUCCESS 成功，其它为失败，生成图片类型PNG
// 参数 strErrDesc 返回接收成功失败，包括失败的原因
// 参数 strText    条形码的内容
// 参数 strPath    保存文件的绝对路径，包括文件名，目前支持 .png .jpg .bmp
// 参数 eCode      生成条形码的类型
SPM_API  int  spm_bar_code_file(std::string& strErrDesc, std::string   strText, std::string  strPath, SPM_EM_BAR_CODE eCode);
SPM_API  int  spm_bar_code_file(std::string& strErrDesc, std::wstring  strText, std::string  strPath, SPM_EM_BAR_CODE eCode);
// 本函数目前只支持英文，数字
// return  SPM_SUCCESS 成功，其它为失败，生成图片类型PNG
// 参数 strErrDesc 返回接收成功失败，包括失败的原因
// 参数 strText    条形码的内容
// 参数 strMem     保存生成图片的内容， 目前支持 png
// 参数 eCode      生成条形码的类型
SPM_API  int  spm_bar_code_mem(std::string& strErrDesc, std::string   strText, std::string& strMem, SPM_EM_BAR_CODE eCode);
SPM_API  int  spm_bar_code_mem(std::string& strErrDesc, std::wstring  strText, std::string& strMem, SPM_EM_BAR_CODE eCode);



SPM_API  int  spm_bar_qr_read(std::string& strErrDesc, std::string  strPath, std::string& strResult, std::string& strFormat);

#endif  //__SPM_BAR_QR_CODE_H__
